/*
 * @Author: 码农 2646995216@qq.com
 * @Date: 2025-02-19 13:01:25
 * @LastEditors: 码农 2646995216@qq.com
 * @LastEditTime: 2025-02-19 21:50:31
 * @FilePath: /pipe/comm.hpp
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */

 //防止头文件被多次包含
#ifndef __COMM_HPP__
#define __COMM_HPP__

#include <iostream>
#include <string>
#include <cerrno>
#include <cstring>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>

using namespace std;

class Fifo
{
public:
    //构造函数
    Fifo(const string& path)
    :_path(path)
    {
        umask(0);//将文件的默认权限设置为0
        //_path.c_str()相当于得到_path的字符串，0666：设置管道文件的权限
        int n=mkfifo(_path.c_str(),0666);
        if(n==0)
        {
            cout<<"mkfifo success"<<endl;
        }
        else{
            //打印错误码+错误原因
            cout << "mkfifo failed, errno: " << errno << ", errstring: " << strerror(errno) << endl;
        }
        
    }
    ~Fifo()
    {
        int n=unlink(_path.c_str());//释放该管道文件
        if(n==0)
        {
            cout<<"unlink success"<<endl;
        }
        else{
            cout << "unlink failed, errno: " << errno << ", errstring: " << strerror(errno) << endl;
        }
    }

private:
    string _path;//文件路径+文件名
};

#endif//条件编译结束